#ifndef __PIEZA_H
#define __PIEZA_H
#include "matriz.h"

/**
@brief Clase responsable de manipular las piezas del juego
*/
class Pieza{
	private:
		/**
		@brief Matriz donde se almacena los datos de la pieza, dependiendo del numero que contengan las celdas la pieza sera de un color u otro
		*/
		Matriz m;	
	public:
		/**
     		@brief Constructor por defecto
  		 */
		Pieza();
		/**
    	 	@brief Constructor por valor
   		*/
		Pieza (int f, int c); 
		/**
     		@brief Devuelve el número de filas
    		@return Número total de filas
    		@pre f mayor que 0
    		@pre c mayor que 0
   		*/
		int Filas()const;    
		/**
     		@brief Devuelve el número de columnas
    		@return Número total de columnas
   		*/   
		int Columnas()const;  
		/**
    		@brief Modifica una posición de la pieza
     		@param i Fila de la pieza que se desea modificar
		@param j Columna de la pieza que se desea modificar
     		@param v Valor que se inserta en la posición indicada
     		@pre i mayor o igual que 0 y menor que filas
     		@pre j mayor o igual que 0 y menor que columnas
     		@pre v mayor que 0 y menor que 8
   		*/ 
		void Set(int i, int j, int v);
		/**
    		@brief Devuelve una posición de la pieza
     		@param i Fila de la pieza que se desea devolver
		@param j Columna de la pieza que se desea devolver
     		@pre i mayor o igual que 0 y menor que filas
     		@pre j mayor o igual que 0 y menor que columnas
   		*/ 
		int Get(int i, int j)const;   
		/**
    		@brief Rota la pieza hacia la derecha
   		*/ 
		void RotaDcha();
		/**
    		@brief Rota la pieza hacia la izquierda
   		*/
		void RotaIzda();
		/**
    		@brief Devuelve el color de pieza en forma de entero
   		@return Número de tipo
   		*/
		int Color()const;
		/**
     		@brief Operador de asignación
   		*/
		Pieza& operator=(const Pieza& p);
		/**
     		@brief Destructor
   		*/
		~Pieza ();                   



};
#endif
